package com.xqb.modules.domain.po;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xqb.common.annotation.Excel;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.io.Serializable;
import java.util.Date;

/**
 * 学生课程对象 std_learning_lesson
 * 
 * @author xqb
 * @date 2024-10-14
 */
@Data
public class StdLearningLesson implements Serializable
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long id;

    /** 学员id */
    @Excel(name = "学员id")
    private Long userId;

    /** 课程id */
    @Excel(name = "课程id")
    private Long courseId;

    /** 课程状态，0-未学习，1-学习中，2-已学完，3-已失效 */
    @Excel(name = "课程状态，0-未学习，1-学习中，2-已学完，3-已失效")
    private Long status;

    /** 每周学习频率，例如每周学习6小节，则频率为6 */
    @Excel(name = "每周学习频率，例如每周学习6小节，则频率为6")
    private Long weekFreq;

    /** 学习计划状态，0-没有计划，1-计划进行中 */
    @Excel(name = "学习计划状态，0-没有计划，1-计划进行中")
    private Long planStatus;

    /** 已学习小节数量 */
    @Excel(name = "已学习小节数量")
    private Long learnedSections;

    /**
     * 最近一次学习的小节id
     */
    @Excel(name = "最近一次学习的小节id")
    private Long latestSectionId;

    /**
     * 最近一次学习的时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "最近一次学习的时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date latestLearnTime;

    /**
     * 过期时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "过期时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date expireTime;
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("userId", getUserId())
            .append("courseId", getCourseId())
            .append("status", getStatus())
            .append("weekFreq", getWeekFreq())
            .append("planStatus", getPlanStatus())
            .append("learnedSections", getLearnedSections())
            .append("latestSectionId", getLatestSectionId())
            .append("latestLearnTime", getLatestLearnTime())
            .append("createTime", getCreateTime())
            .append("expireTime", getExpireTime())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
